home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr05 / xnot12a.zip / READ.ME < prev    next >
Text File  |  1993-06-16  |  17KB  |  352 lines

  1.                                             Updated June 14 1993 (1.2a)
  2.  
  3. This file attempts to explain what notgnu is, and is not. The second
  4. part is text taken directly from the MG2a .doc file. I've editted it
  5. to remove things which are no longer appropriate due to changes I made
  6. with my port to Windows 3.1 and Intel-based NT. RISC versions of NT should
  7. work in theory; keep in mind that the DIRED mode formatting is hard-coded
  8. for FAT (DOS) filesystems under Windows/NT, but other than that should work.  
  9. Windows builds were done with Microsoft C7 and there may be some unknown 
  10. dependencies therein which I wouldn't know about since I have no other compiler.
  11. I've done limited building/testing/tuning for X11/Unix platforms; see proto.h 
  12. for macros which deal with some compiler problems. The makefiles are named
  13. for the UN*X system where I was actually able to compile/link the editor.
  14. Executable file size vs gnu emacs is notable. 
  15.  
  16. PLEASE SEND ME MAIL IF YOU TRY THIS EDITOR. I WOULD APPRECIATE ANY/ALL COMMENTS.
  17. (jmelbin@hpwala.hp.com).
  18.  
  19. notgnu was created to be a lite(r)weight emacs editor for Windows 3.x;
  20. NT; X11 came later since I had some machines w/o disk or memory to support
  21. real live gnu Emacs.[On a DEC RISC workstation, the executable is 1/3 the size 
  22. of xemacs (18.54)] The emphasis has been on Windows vs X11 since I have a PC 
  23. at home and GNU emacs on my Unix workstation. notgnu is based on MG2a, a PC
  24. emacs made to feel like GNU, that had a small code base and was nicely 
  25. organized into editor and terminal functions (ideal for a quick port). It is 
  26. quite useable and fast on my 486-33; with lots of large files, I can sometimes 
  27. see Windows 'paging' to disk. My friend's 386 portable also runs notgnu quite 
  28. nicely. A surprising number of people have sent mail; they actually seem to 
  29. like it's small size and low resource usage. Your milage may vary. I have 
  30. built on various Window's (Intel) machines, an Intel NT box, a DEC RISC (MIPS) 
  31. Ultrix workstation, a DEC Alpha OSF box, INTERACTIVE Unix, a SparcStation 10 
  32. running Solaris 2.1, and HP-UX 700 series workstation; It also appears to run on 
  33. LINUX and a few other UN*X machines, built by folks who grabbed an earlier version
  34. of this .zip file from me.
  35.  
  36. Basic knowlege of any emacs-like editor and Windows 3.x or X11 is assumed.
  37. Since there are no variables, or indeed, a programming language, there
  38. are a number of not-so-gnu like commands which control the state of the
  39. editor; ie toggle-window-menu. The X11 version supports a few start-up
  40. params on the command line like fg color, etc, but currently non from the
  41. X resource files...
  42.  
  43. Mouse:
  44. ------
  45. Left button down-up in window sets dot.
  46.  
  47. Left button down-drag in modeline resizes the buffer window.
  48.  
  49. Left button down-drag marks a region (sorry no highlight yet!).
  50.  
  51. Right button down-up sets dot && pastes the contents of the killbuffer.
  52.  
  53. Left button down-hold with ctrl scrolls the window. Shift reverses direction.
  54.  
  55. Left button down in window will insert contents of file supplied
  56.   from a drag&drop client; ie drag a file out of filemanager into some buffer 
  57.   in notgnu. It will insert the data AT DOT which is set WHERE YOU DOWN CLICK.
  58.   (Windows 3.x and NT only)
  59.  
  60. Left button down in modeline will open a file from a drag&drop client
  61.   window; ie drag a file from filemanager to some modeline and open the file 
  62.   into it's own buffer/window.
  63.   (Windows 3.x and NT only)
  64.  
  65. Left button doubleclick on filename in DIRED mode will do a find-file
  66.   on that file name, using the dir path of the buffer.
  67.  
  68. Left button doubleclick on a buffername in Buffer List will do a use-buffer on 
  69.   that buffer.
  70.  
  71.  
  72. Internal functional changes - too many to mention them all..
  73. ------------------------------------------------------------
  74. The current buffer defines the current directory unless the buffer has no
  75. legal filename. 'cd' and 'pwd' are no longer available; the titlebar contains
  76. the current directory and time. (DOS version loses out here)
  77.  
  78. Viewing a file read-only is now supported by the command 'view-file'.
  79. You can toggle the state of the readonly flag by doing 'toggle-read-only'. 
  80. Likewise, you can change the state of a modified file by using
  81. 'toggle-modified-state'. File permissions are properly checked on open
  82. for write permission (not guarenteed on NFS or other network disks if the
  83. mounting software doesn't support stat to DOS). See notgnu.st (startup file) 
  84. for some other toggles. Other new file functions 'revert-to-incremental' 
  85. (see below), 'reread-file'.
  86.  
  87. Changes to DIRED mode to provide ONLY e,f,v (for edit, find or view file) 
  88. resulting from cleanup/bug fixes. Mouse double-click invokes f (find-file). 
  89. Un*x versions use 'ls' via system and the output is not always as
  90. expected; I'm working on that too.
  91.  
  92. Dir buffer optionally generated from find-file, view-file, etc when entering 
  93. file spec. IE c:\jam\me\file<TAB> will get you a listing of files which 
  94. match "c:\jam\me\file*.*". Doing find-file c:\foo\junk*.*<RETURN> will also 
  95. work. Wildcards work as well/badly as they do in DOS, but the only wildcard 
  96. implemented is "*". The UNIX version needs work because it is not at all
  97. clever about determing what is a file and what is a directory; as I
  98. said above...
  99.  
  100. Buffer list window supports u (use-buffer), k (kill-buffer); mouse doubleclick 
  101. invokes u.
  102.  
  103. Incremental saves are created during editting; every 20 seconds or so the 
  104. buffers are scanned for files with changes since the last incremental save, 
  105. and incremental saves are created. Continuous typing will delay the save.
  106. (Not functioning on DOS version at this time)
  107.  
  108. Timestamp checking can be done during editting; each function which would 
  109. change the content of a buffer (with file name) causes a check on the timestamp.
  110. 'toggle-check-file-timestamp' will toggle this flag, the default is OFF.
  111. (Hint - turn it off if editting a file on a slow floppy). Timestamp also checked
  112. before i/o (ie re-read or save). This can NOT be turned off.
  113.  
  114.  
  115. Sub-processes:
  116. -------------
  117. These are really functional changes, but are important enough to get special
  118. notice.
  119.  
  120. You can open any number of DOS windows with 'shell-window' (see below). You
  121. can have at most (currently) 1 background 'shell' command running with
  122. 'shell-command' or 'compile'.  Both execute DOS commands via command.com.  You 
  123. can execute any number of peer Windows programs with 'win-exec'. (Un*x
  124. version does a fork for all spawned tasks; it still manages at most 1
  125. background job which is creating a log)
  126.  
  127. 'compile' runs a make command in the background via command.com.  It defaults
  128. to nmake (make on Un*x (but you can back up and retype any command.
  129. 'compile' will remember (like GNU does) your last command (sorry, you can't 
  130. change the default yet). 'next-error' attempts to behave like the GNU version 
  131. and will search the buffer em$shl.log; you will get a stupid error if you had 
  132. not previously run a 'compile' and replied Yes to 'Read log file' message box. 
  133. Under some conditions, the log will be empty; ie when the only output was 
  134. interactive. DOS is not perfect, neither is notgnu. NOTE that I had C7 on 
  135. Windows/DOS, DEC Ultrix cc, and Solaris and HP cc as models for the format of 
  136. a compile log.  So, don't expect log file parsing to be perfect for other 
  137. compilers.  This was certainly a case of 'it works great for me' and hopefully 
  138. ok for you :)
  139.  
  140.  
  141. 'alarms' is a quick and dirty little calendar-like feature for notgnu.
  142. See notgnu.alr for minimal information.  notalarm.exe should be copied
  143. to the same place you put the notgnu executable. Type 'alarms' to see what
  144. you can do. UNIX version is called xnotalr; it is minimally useful.
  145.  
  146.  
  147. Appearance:
  148. -----------
  149. The buffer mode line has a couple extra things; the 2'nd col in is either
  150. a '-', a '*' (modified) or a '%' (read only). The very next column will
  151. have a '+' in it or a '!' when there is a '*' in col 2. '!' means the buffer 
  152. has modifications which have NOT been flushed to the incremental save file; 
  153. '+' means that the incremental file on disk looks exactly like the current 
  154. version inside notgnu, which is not the same as your source file. 
  155.  
  156. Touched text (editted lines) change color. The default color is your
  157. system highlite color for active windows (got a better default?).  Under X11,
  158. window color defaults to white, all text to black. When you write the file out, 
  159. the colored lines reverts to normal (window-text) color. 
  160. 'toggle-show-touched-lines' toggles the flag controlling this display.
  161.  
  162. Text(fg), window(bg) and touched-text(fg2) colors can be set. See window system 
  163. menu or set-*-color extended commands.  Values are retained in notgnu.ini (on
  164. Windows/NT) when you do 'Save Setting' from window system menu. Remember, 
  165. Windows uses only PURE colors for text, so choose colors carefully else get 
  166. ughly results. 
  167.  
  168. Font is settable via window system menu (or set-font extended command); saved 
  169. when Save Settings done (Window/NT).
  170.  
  171. Save Settings also saves current window position and size in rows/cols.
  172. (NOTE no settings are saved on X11 platforms.)
  173.  
  174. Menu Bar (Windows/NT only):
  175. ---------------------------
  176. The menu bar is accessable from the window's system menu. All commands
  177. in the pulldowns are extended commands available via Meta-x except for
  178. clipboard access functions (Copy Region/Cut Region/Paste from clipboard) and
  179. Print. (PRINT is not compiled in at this time, see jam.h) The common dialogs 
  180. are hooked up for file open and write commands in the File pulldown. This can 
  181. be useful for browsing.  (toggle-window-menu will also bring up the notgnu
  182. local menubar)
  183.  
  184. The possibly stupid-scary looking choice in the system menu (Shoot-Me-Dead)
  185. was a debugging tool. It will kill the editor and NOT cleanup (any of the 
  186. incremental save files or logs). It is not useful to normal people; 
  187. restarting the editor after doing that should be equal to what happens if you 
  188. rerun after you best friend yanks the AC power.  notgnu should report all the 
  189. files you never had a chance to save, and if you mouse doubleclick on the 
  190. name, you'll get the revert-to-incremental prompt.  Try it out just to
  191. prove that there is some working crash-recovery code, but wait till all
  192. your modified files have the little '+' next to the '*' :)  NOTE that on
  193. Un*x or NT platforms, multiple instances of notgnu running may (will) be
  194. confused by the existance of a 'crash' log.  Modified, unsaved files
  195. in a running editor will be intepreted as 'lost changes' by subsequent editors
  196. on startup, and that the crash logs will overwrite one another since
  197. they user's home directory.
  198.  
  199. On the window menubar you'll notice some things under Execute. These were
  200. described under Sub-processes above.
  201.  
  202. IMPORTANT to note:
  203.     
  204.     meshell.pif is just _default.pif modified to use a certain font
  205.     and to set the execution to run BACKGROUND and EXCLUSIVE with
  206.     some process priorities set (see ADVANCED in the pif editor dialog). 
  207.     Copy this to the SAME PLACE you put the notgnu (wnot.exe) file.  If this
  208.     file is not found, it defaults to just running COMMAND.COM. There
  209.     is also a file called command.pif which has had the same changes
  210.     made to let background tasks actually RUN in the background. Copy
  211.     this to your WINDOWS directory. See file "files" for more information.
  212.     Failure to install these files means background jobs will run VERY VERY
  213.     SLOWLY on most Windows 3.x systems.
  214.     
  215.  
  216. Misc (Windows/NT only):
  217. -----------------------
  218. The Window's hot keys Alt-tab (to switch between application windows) and 
  219. Alt-space (to access the window's system menu) are the only 
  220. non-bindable keys. It was easier to always catch them rather than see if a 
  221. user had tried to bind them or not.
  222.  
  223.  
  224. See 'files' for the source file list and a little bit more information. Don't
  225. ask why the version numbers are what they are; I bump the number often
  226. during my own hacking. Please remember this is freeware, and you should only 
  227. expect what you pay for; I'm hoping that you are happily surprised anyway.
  228.  
  229. Julie
  230.  
  231. ---------------------------------------------------------------------------
  232. This documentation covers mg 2a.
  233.  
  234. Possible future changes:
  235.  
  236. Rearange file contents along more rational lines.  Further split the
  237. monolithic def.h file.
  238.  
  239. Changing the echo line stuff to use a minibuffer keymap.
  240.  
  241. Making the kill buffer a linked list of lines.
  242.  
  243. Variables.
  244.  
  245. Make long lines wrap like they do in GNU emacs.
  246.  
  247. Fix known (and unknown :-) bugs.
  248.  
  249. Have the keymaps and associated tables generated by a program.
  250.  
  251. Known bugs/limitations:
  252.  
  253. Binding a key in a named keymap may or may not change the binding of
  254. other keys pointing to the same keymap.     (i.e. if ^H and ^_ are bound
  255. to help, rebinding ^Hb may not (or may) change ^_b.  This can be cured
  256. by rebinding ^_ to help.)
  257.  
  258. Overwrite mode does not work in macros.     (Characters are inserted
  259. rather than overwriting.)
  260.  
  261.  
  262. New implementation oddities:
  263.  
  264. insert and define-key are new commands corresponding to the mocklisp
  265. functions in Gnu Emacs.     (Mg does not have non-command functions.)
  266. (Mg's insert will only insert one string.)
  267.  
  268. The display wrap code does not work at all like that of GNU emacs.
  269.  
  270. Adding command functions to mg:
  271.  
  272. Command functions take two integer aguments and return an integer.
  273. The first argument, f, is a set of flags.  (f&FFARG) is non-zero if a
  274. numeric arguement was passed to the function.  (There are bits
  275. indicating how the agument was specified, but they are not fully
  276. impleminted.)  (f&FFRAND) is non-zero if the function is being called
  277. by another function and that possibly slightly different action should
  278. be taken.  (No error checking, supress output, etc.)  The second
  279. argument, n, is the numeric agument passed or one if there was no
  280. numeric arugment.  The fuction should return TRUE if it executes
  281. correctly, FALSE if it could not, and ABORT if the user typed the
  282. keyboard quit character at a prompt.
  283.  
  284. The function must be added to the functnames table in keymap.c. This
  285. table must be kept in assending ascii sequence.
  286.  
  287.  
  288. Key maps:
  289.  
  290. Key maps are structures containing information on what action should
  291. be taken corresponding to an individual keypress.  That action could
  292. be an indication that this is a prefix key and the next kepress should
  293. be looked up in another keymap.
  294.  
  295.     Example keymap:
  296.  
  297.     static    struct    KEYMAPE(6+IMAPEXT)    cXmap = {
  298.         6,
  299.         6+IMAPEXT,
  300.         rescan,
  301.         {
  302.             {CCHR('B'),CCHR('G'),    cXcB,    (KEYMAP *)NULL},
  303.             {CCHR('L'),CCHR('X'),    cXcL,    (KEYMAP *)NULL},
  304.             {'(',    ')',        cXlp,    (KEYMAP *)NULL},
  305.             {'0',    '4',        cX0,    (KEYMAP *)&cX4map},
  306.             {'=',    '=',        cXeq,    (KEYMAP *)NULL},
  307.             {'^',    's',        cXcar,    (KEYMAP *)NULL},
  308.         }
  309.     };
  310.  
  311. (Note: this example is a simplified example of a real keymap in keymap.c.)
  312.  
  313. Since C does not directly support structures containing undementioned
  314. arrays, the macro KEYMAPE is used to create a structure with an array
  315. of the proper size.  6 is the current size of the array, and IMAPEXT
  316. is the number of extra elements left for future groth (by rebinding
  317. keys) before the map must be reallocated.  rescan is the function to
  318. be executed if a specific entry for the key is not found.  (rescan is
  319. a special function that searches for something else to do -- first by
  320. trying lowercasing the last character in the keymap, then by trying
  321. the other modes in effect.)
  322.  
  323. The array elements must be in order by the keys they define.  Each
  324. covers a range of characters.  Numeric values should not be used for
  325. characters, they make porting mg to some other systems harder.    The
  326. CCHR macro may be used to specify control characters, including DEL
  327. (CCHR('?')).  cXcB, cXcL, etc. are arrays of pointers to functions
  328. returning int.    One of these fuction pointers per element may be to
  329. the pseuto-function prefix.  cX4map is the keymap coresponding to the
  330. prefix function bound to '4' in this keymap.  Having several keys in
  331. an element bound to the default function is better than increasing the
  332. number of elements.
  333.  
  334.  
  335.  
  336. Modes:
  337.  
  338. Modes are named key maps that are scanned for key bindings before the
  339. global keymap is.  There are functions in modes.c to toggle modes on
  340. or off for individual buffers.  Note that the "major"/"minor" mode
  341. distiction is different than in Gnu Emacs.  Dired is currently the
  342. only major mode available, buffers are put into dired mode on creation
  343. by the dired code.  (The distiction in mg is the major mode replaces
  344. the default keymap instead of being an overlay.) Some modes (overwrite
  345. and no-tab) also trigger per-buffer flags that should be convered to
  346. per-buffer variables when we add variables.  Keymaps for the modes are
  347. kept in keymap.c with the other keymaps.
  348.  
  349. Names of most compile time options have changed.  Whatever is most
  350. GNU-emacs like is now the default.
  351.  
  352.